package com.ruoyi.business.controller;

import com.ruoyi.business.service.IAcCustomerInfoService;
import com.ruoyi.business.service.IAcLeaseInfoService;
import com.ruoyi.business.service.IAcPayfeesInfoService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.service.IAcWorkOrderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.business.service.IAcAssetInfoService;



@RestController
//@Api("资产信息")
@RequestMapping("/business/assetAnalysis")
public class AssetAnalysisController extends BaseController
{
    @Autowired
    private IAcAssetInfoService acAssetInfoService;


    @Autowired
    private IAcCustomerInfoService acCustomerInfoService;

    @Autowired
    private IAcLeaseInfoService acLeaseInfoService;

    @Autowired
    private IAcPayfeesInfoService acPayfeesInfoService;


    @Autowired
    private IAcWorkOrderService acWorkOrderService;
    /**
     * 数据报表统计-资产统计-资产总数
     * 查询近六个月的资产数量
     *
     * */
    @GetMapping("/selectAssetNum")
    @ApiOperation("数据报表统计-资产统计-资产总数")
    public AjaxResult selectAssetNum() {
        return success(acAssetInfoService.selectAssetNum());
    }

    /**
     * 数据报表统计-资产统计-所在位置
     * 查询资产位于各个区县数量
     *
     * */
    @GetMapping("/selectAssetLocation")
    @ApiOperation("数据报表统计-资产统计-所在位置")
    public AjaxResult selectAssetLocation() {
        return success(acAssetInfoService.selectAssetLocation());
    }

    /**
     * 数据报表统计-资产统计-资产状态
     * 查询资产不同状态的数量
     *
     * *
     * */

    @GetMapping("/selectAssetStatus")
    @ApiOperation("数据报表统计-资产统计-资产状态")
    public AjaxResult selectAssetStatus() {
        return success(acAssetInfoService.selectAssetStatus());
    }

    /**
     * 数据报表统计-资产统计-资产类型比例
     * 查询资产类型比例 饼图
     *如 厂房233，写字楼234，仓库235，其他236
     * */
    @GetMapping("/selectAssetType")
    @ApiOperation("数据报表统计-资产统计-资产类型比例")
    public AjaxResult selectAssetType() {
        return success(acAssetInfoService.selectAssetType());
    }

    /**
     * 数据报表统计-资产统计-产权归属
     * 查询不同公司旗下产权数量
     *
     * */
    @GetMapping("/selectAssetProperty")
    @ApiOperation("数据报表统计-资产统计-产权归属")
    public AjaxResult selectAssetProperty() {
        return success(acAssetInfoService.selectAssetProperty());
    }


    /**
     * 数据报表统计-资产统计-账面原值
     * 查询近六个月每个月资产的账面值
     *
     * */
    @GetMapping("/selectAssetBookValue")
    @ApiOperation("数据报表统计-资产统计-账面原值")
    public AjaxResult selectAssetBookValue() {
        return success(acAssetInfoService.selectAssetBookValue());
    }


    /**
     * 数据报表统计-资产统计-出租趋势
     * 查询资产近六个月每个月的出租数量
     *
     * */
    @GetMapping("/selectAssetRentNum")
    @ApiOperation("数据报表统计-资产统计-出租趋势")
    public AjaxResult selectAssetRentNum() {
        return success(acAssetInfoService.selectAssetRentNum());
    }

    /**
     * 数据报表统计-资产统计-变更类型
     * 查询资产不同变更类型的数量
     *
     * */
    @GetMapping("/selectAssetChangeType")
    @ApiOperation("数据报表统计-资产统计-变更类型")
    public AjaxResult selectAssetChangeType() {
        return success(acAssetInfoService.selectAssetChangeType());
    }

    /**
     * 数据报表统计-资产统计-闲置资产top5
     * 查询闲置资产top5
     *
     * */
    @GetMapping("/selectAssetTop5")
    @ApiOperation("数据报表统计-资产统计-闲置资产top5")
    public AjaxResult selectAssetTop5() {
        return success(acAssetInfoService.selectAssetTop5());
    }


    /**
     * 数据报表统计-客户统计-客户数量
     * 查询近六个月每个月的客户数量
     *
     * */
    @GetMapping("/selectCustomerNum")
    @ApiOperation("数据报表统计-客户统计-客户数量")
    public AjaxResult selectCustomerNum() {
        return success(acCustomerInfoService.selectCustomerNum());
    }

    /**
     * 数据报表统计-客户统计-客户类型
     * 查询近不同客户类型数量
     *
     * */
    @GetMapping("/selectCustomerType")
    @ApiOperation("数据报表统计-客户统计-客户类型")
    public AjaxResult selectCustomerType() {
        return success(acCustomerInfoService.selectCustomerType());
    }

    /**
     * 数据报表统计-客户统计-客户状态
     * 获取客户当前是否租赁状态的数量
     *
     * */
    @GetMapping("/selectCustomerStatus")
    @ApiOperation("数据报表统计-客户统计-客户状态")
    public AjaxResult selectCustomerStatus() {
        return success(acCustomerInfoService.selectCustomerStatus());
    }

    /**
     * 数据报表统计-客户统计-租赁客户top5
     * 获取客户租赁top5
     *
     * */
    @GetMapping("/selectCustomerTop5")
    @ApiOperation("数据报表统计-客户统计-租赁客户top5")
    public AjaxResult selectCustomerTop5() {
        return success(acCustomerInfoService.selectCustomerTop5());
    }

    /**
     * 数据报表统计-租赁统计-租赁总数
     * 获取近六个月每个月的租赁数量
     *
     * */
    @GetMapping("/selectLeaseNum")
    @ApiOperation("数据报表统计-租赁统计-租赁总数")
    public AjaxResult selectLeaseNum() {
        return success(acLeaseInfoService.selectLeaseNum());
    }

    /**
     * 数据报表统计-租赁统计-租赁人类型
     * 获取租赁人类型数量
     *
     * */
    @GetMapping("/selectLeaseType")
    @ApiOperation("数据报表统计-租赁统计-租赁人类型")
    public AjaxResult selectLeaseType() {
        return success(acLeaseInfoService.selectLeaseType());
    }
    /**
     * 数据报表统计-租赁统计-租赁期限
     * 获取近六个月每个月的退租和新增数量
     *
     * */
    @GetMapping("/selectLeaseTerm")
    @ApiOperation("数据报表统计-租赁统计-租赁期限")
    public AjaxResult selectLeaseTerm() {
        return success(acLeaseInfoService.selectLeaseTerm());
    }


    /**
     * 数据报表统计-租赁统计-租赁类型
     * 获取已经租出去的资产类型数量
     *
     * */
    @GetMapping("/selectLeaseAssetType")
    @ApiOperation("数据报表统计-租赁统计-租赁类型")
    public AjaxResult selectLeaseAssetType() {
        return success(acLeaseInfoService.selectLeaseAssetType());
    }

    /**
     * 数据报表统计-租赁统计-租赁面积TOP5
     * 获取已经租出去的资产租赁面积top5
     *
     * */
    @GetMapping("/selectLeaseAreaTop5")
    @ApiOperation("数据报表统计-租赁统计-租赁面积TOP5")
    public AjaxResult selectLeaseAreaTop5() {
        return success(acLeaseInfoService.selectLeaseAreaTop5());
    }

    /**
     * 数据报表统计-租赁统计-状态变更
     * 获取已经租出去的资产状态变更数量
     * 如 短期 长期 中期分别多少个
     *
     * */
    @GetMapping("/selectLeaseChangeType")
    @ApiOperation("数据报表统计-租赁统计-状态变更")
    public AjaxResult selectLeaseChangeType() {
        return success(acLeaseInfoService.selectLeaseChangeType());
    }

    /**
     * 数据报表统计-租金统计-租金收入
     * 获取近六个月每个月的租金收入
     *
     * */
    @GetMapping("/selectRentIncome")
    @ApiOperation("数据报表统计-租金统计-租金收入")
    public AjaxResult selectRentIncome() {
        return success(acPayfeesInfoService.selectRentIncome());
    }

/**
     * 数据报表统计-租金统计-租金收缴及时性
     * 获取近超期交租和按时交租的数量
     *
     * */
    @GetMapping("/selectRentTimeliness")
    @ApiOperation("数据报表统计-租金统计-租金收缴及时性")
    public AjaxResult selectRentTimeliness() {
        return success(acPayfeesInfoService.selectRentTimeliness());
    }

/**
 * 数据报表统计-租金统计-租金收入占比
 * 获取不同类型资产的租金收入占比
 *
 * */
    @GetMapping("/selectRentIncomeProportion")
    @ApiOperation("数据报表统计-租金统计-租金收入占比")
    public AjaxResult selectRentIncomeProportion() {
        return success(acPayfeesInfoService.selectRentIncomeProportion());
    }


    /**
     * 数据报表统计-租金统计-拖欠时长
     * 获取超期缴费的拖欠时长
     *
     * */
    @GetMapping("/selectRentDelayTime")
    @ApiOperation("数据报表统计-租金统计-拖欠时长")
    public AjaxResult selectRentDelayTime() {
        return success(acPayfeesInfoService.selectRentDelayTime());
    }


/**
 * 数据报表统计-租金统计-收入支出情况
 * 获取租金和押金的占比情况
 *
 * */
    @GetMapping("/selectRentIncomeExpenditure")
    @ApiOperation("数据报表统计-租金统计-收入支出情况")
    public AjaxResult selectRentIncomeExpenditure() {
        return success(acPayfeesInfoService.selectRentIncomeExpenditure());
    }

    /**
     * 数据报表统计-租金统计-押金情况
     * 获取近六个月每个月不退、未退、已退的押金数量
     *
     * */
    @GetMapping("/selectRentDeposit")
    @ApiOperation("数据报表统计-租金统计-押金情况")
    public AjaxResult selectRentDeposit() {
        return success(acPayfeesInfoService.selectRentDeposit());
    }

    /**
     * 数据报表统计-工单统计-工单总数
     * 获取近六个月每月的巡检工单、保养工单、维修工单数量
     *
     * */
    @GetMapping("/selectWorkOrderNum")
    @ApiOperation("数据报表统计-工单统计-工单总数")
    public AjaxResult selectWorkOrderNum() {
        return success(acWorkOrderService.selectWorkOrderNum());
    }



    /**
     * 数据报表统计-工单统计-工单占比
     * 获取近六个月每月的巡检工单、保养工单总数
     *
     * */
    @GetMapping("/selectWorkOrderProportion")
    @ApiOperation("数据报表统计-工单统计-工单占比")
    public AjaxResult selectWorkOrderProportion() {
        return success(acWorkOrderService.selectWorkOrderProportion());
    }


    /**
     * 数据报表统计-工单统计-工单处理时效
     * 获取1/2/3/4小时处理工单的数量
     *
     * */

    @GetMapping("/selectWorkOrderProcessingSpeed")
    @ApiOperation("数据报表统计-工单统计-工单处理时效")
    public AjaxResult selectWorkOrderProcessingSpeed() {
            return success(acWorkOrderService.selectWorkOrderProcessingSpeed());

    }

    /**
     * 数据报表统计-工单统计-维修工单类型
     * 获取维修工单不同类型的数量
     *
     * */

    @GetMapping("/selectWorkOrderType")
    @ApiOperation("数据报表统计-工单统计-维修工单类型")
    public AjaxResult selectWorkOrderType() {
        return success(acWorkOrderService.selectWorkOrderType());
    }

    /**
     * 数据报表统计-工单统计-工单状态
     * 获取不同状态的工单总数
     *
     * */

    @GetMapping("/selectWorkOrderStatus")
    @ApiOperation("数据报表统计-工单统计-工单状态")
    public AjaxResult selectWorkOrderStatus() {
        return success(acWorkOrderService.selectWorkOrderStatus());
    }

    /**
     * 数据报表统计-工单统计-紧急程度
     * 获取不同紧急程度的工单总数
     *
     *
     * */
    @GetMapping("/selectWorkOrderUrgency")
    @ApiOperation("数据报表统计-工单统计-紧急程度")
    public AjaxResult selectWorkOrderUrgency() {
        return success(acWorkOrderService.selectWorkOrderUrgency());
    }



    /**
     * 数据报表统计-工单统计-工单累计时长
     * 获取不同类型工单的累计时间长度
     * */

    @GetMapping("/selectWorkOrderAccumulatedTime")
    @ApiOperation("数据报表统计-工单统计-工单累计时长")
    public AjaxResult selectWorkOrderAccumulatedTime() {
        return success(acWorkOrderService.selectWorkOrderAccumulatedTime());
    }



    /**
     * 数据报表统计-工单统计-巡检工单问题反馈
     * 获取巡检工单不同类型的问题反馈数量
     *
     * */

    @GetMapping("/selectWorkOrderInspectionFeedback")
    @ApiOperation("数据报表统计-工单统计-巡检工单问题反馈")
    public AjaxResult selectWorkOrderInspectionFeedback() {
        return success(acWorkOrderService.selectWorkOrderInspectionFeedback());
    }


    /**
     * 数据报表统计-工单统计-工单处理排名
     * 获取工单处理人员处理工单数量的排名
     * */

    @GetMapping("/selectWorkOrderProcessingRank")
    @ApiOperation("数据报表统计-工单统计-工单处理排名")
    public AjaxResult selectWorkOrderProcessingRank() {
        return success(acWorkOrderService.selectWorkOrderProcessingRank());
    }

    //todo 首页时间重置之后需修改

}
